<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>
    <script>
        // let arr = ['荒天帝', '叶天帝', '王林', '亡灵圣法神伊莱克斯']
        // let iter = arr[Symbol.iterator]() // 部署迭代器接口
        // // value：代表获取的值，done：代表是否结束迭代（值为 true 则结束迭代）
        // console.log(iter.next()) // 结果：{ value: '荒天帝', done: false }
        // console.log(iter.next()) // 结果：{ value: '叶天帝', done: false }
        // console.log(iter.next()) // 结果：{ value: '王林', done: false }
        // console.log(iter.next()) // 结果：{ value: '亡灵圣法神伊莱克斯', done: false }
        // console.log(iter.next()) // 结果：{ value: undefined, done: true }
        // for (const i of arr) {
        //     console.log(i);
        // }
        // let obj = {
        //     name:'荒天帝',
        //     age:18
        // }
        // 生成器
        // 生成器函数必须写 * 来区分是否是生成器函数
        // function* fn() {
        // 	console.log(1) // ⽣成器第 1 段
        // 	yield 1
        // 	console.log(2) // ⽣成器第 2 段
        // 	yield 2
        // 	console.log(3) // ⽣成器第 3 段
        // 	yield 3
        // }
        // let iter = fn() // ⽣成器函数返回的结果是迭代器对象
        // 调用迭代器方法：next() 返回对象的 value 值为 yield 后面的值
        // console.log(iter.next()) // 结果：1 { value: 1, done: false }
        // console.log(iter.next()) // 结果：2 { value: 2, done: false }
        // console.log(iter.next()) // 结果：3 { value: 3, done: false }
        // console.log(iter.next()) // 结果：{ value: undefined, done: true }
        // function* a(a) {
        //     console.log(a);
        //     let b = yield
        //     console.log(b);
        //     let c = yield
        //     console.log(c);
        //     let d = yield
        //     console.log(d)
        // }
        // let iter1 = a('你好')
        // console.log(iter1.next());
        // console.log(iter1.next('荒天帝'));
        // console.log(iter1.next('独断万古'));
        // console.log(iter1.next('谁敢言无敌，谁敢言不败'));

        // function one() {
        //     setTimeout(() => {
        //         console.log('你好！');
        //         iter.next()
        //     }, 1000);
        // }
        // function two() {
        //     setTimeout(() => {
        //         console.log('荒天帝');
        //         iter.next()
        //     }, 2000);
        // }
        // function three() {
        //     setTimeout(() => {
        //         console.log('谁敢言无敌，谁敢言不败');
        //         iter.next()
        //     }, 3000);
        // }
        // function* fnn() {
        //     yield one()
        //     yield two()
        //     yield three()
        // }
        // let iter = fnn()
        // iter.next()
        
        // set
        // var arr = new Set([1,2,3,4,5,6,6,5,4,3,2,1]) // 声明set集合
        // console.log(arr);// set对象集合
        // console.log([...arr]);// 数组
        // console.log(arr.size);
        // console.log([...arr.add(7)]);
        // console.log(arr.delete(7));
        // console.log(arr);
        // console.log(arr.has(4));
        // console.log(arr.clear());
        // console.log(arr);
        
        // Map
        let arr = new Map([
            ['a',1],
            ['b',2],
            ['c',3]
        ])
        console.log(arr);
        console.log(arr.size); // 获取个数
        arr.set('a',2) // 修改或添加
        arr.set('d',2) // 修改或添加
        console.log(arr);
        console.log(arr.get('a')); // 获取
        console.log(arr.delete('a')); // 删除
        console.log(arr);
        console.log(arr.clear()) // 清空
        console.log(arr);
        
    </script>
</body>

</html>